package com.ctshk.rpc.visa.service;


import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.visa.dto.visa.VisaOrderInfoResp;
import com.ctshk.rpc.visa.dto.visa.VisaOrderListDTO;
import com.ctshk.rpc.visa.req.visa.*;

/**
 * <p>
 * 订单中心签证列表 服务类
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-01-28
 */
public interface IVisaOrderService{

    /**
     * 供应商确认签证订单
     * @return
     */
    Result<Void> supplieConfirmOrder(VisaOrderSupplieConfirmReq req, Long userId);

    /**
     * 订单中心签证列表
     * @param visaOrderListReq
     * @return
     */
    PageResponse<VisaOrderListDTO> list(VisaOrderListReq visaOrderListReq);

    /**
     * 订单中心签证详情
     * @param visaOrderInfoReq
     * @return
     */
    Result<VisaOrderInfoResp> query(VisaOrderInfoReq visaOrderInfoReq);

    /**
     * 预订中心签证申请
     * @param visaHandleReq
     * @return
     */
    Long add(VisaHandleReq visaHandleReq, TokenUser user);

    /**
     * 15分钟内未付款把状态改为取消状态
     * @param
     * @return
     */
    Result updateStatus();

    /**
     * 收款
     * @param rderCollectionDetailReq
     * @return
     */
    Result visaOrderCollection(Visa0rderCollectionDetailReq rderCollectionDetailReq,TokenUser user);

    /**
     * 待付款状态取消订单
     * @param
     * @return
     */
    Result<Long> cancelVisaOrder(Visa0rderCancelReq visa0rderCancelReq,TokenUser tokenUser);

    /**
     * 待确认、确认成功、确认取消状态取消订单
     * @param
     * @return
     */
    Result<Long> cancelVisaOrderRefund(Visa0rderRefundDetailReq visa0rderRefundDetailReq,TokenUser tokenUser);

    /**
     * 通知旅客
     * @param
     * @return
     */
    Result notice(Visa0rderNoticeReq visa0rderNoticeReq);

    /**
     * 退款审批
     * @param visaOrderRefundApprovalReq
     * @return
     */
    Result approval(VisaOrderRefundApprovalReq visaOrderRefundApprovalReq);


}
